package com.mondo.financialwallet.domain.repository;

import com.mondo.financialwallet.domain.interactor.GetTransactionRecordList;
import com.mondo.financialwallet.domain.interactor.PostTokenTransfer;
import com.mondo.financialwallet.domain.model.Response;
import com.mondo.financialwallet.domain.model.Token;
import com.mondo.financialwallet.domain.model.TransactionRecordList;
import com.mondo.financialwallet.domain.model.WalletAsset;

import java.util.List;

import io.reactivex.Observable;

public interface WalletRepository {

    /**
     * 我的数字货币列表
     */
    Observable<Response<List<Token>>> myTokenList();

    /**
     * Token 交易记录列表
     */
    Observable<Response<TransactionRecordList>> transactionRecordList(
            GetTransactionRecordList.Params params);

    /**
     * 生成或者获取 Token地址
     */
    Observable<Response<Token>> generateTokenAddress(String id);

    /**
     * 钱包资产
     */
    Observable<Response<WalletAsset>> walletAsset();

    /**
     * 钱包可用资产
     */
    Observable<Response<WalletAsset>> walletAvailableBalance();

    /**
     * 转账
     */
    Observable<Response> transfer(PostTokenTransfer.Params params);
}
